The complexity and limited setup functionality of building automation projects often necessitate extensive work by trained experts in order to install and set up the systems. A typical building automation system takes three to four days to be installed, programmed and commissioned. This greatly increases the time and expense of building automation projects. These projects take this long, in part, because the installer must manually write out any installation and wiring diagrams and bills of materials for the project. Further, under current methods the environment controller must be manually programmed with each of the individual devices and then it must be further programmed to make these devices work together, and to test them properly. Further, control interface design and setup is divorced from the setup of the automation system itself. Control interface design and setup may require separate expert technicians to construct a custom user interface to allow the user to operate the system, or the user may have to use several different interfaces to operate different devices within the system. This also increases the possibility of errors which can make this process even more costly.
Current implementations of control systems lack inherent context about the devices which they control, which must be provided by the installer when installing and programming a system. Automation systems are also limited to what linkages are provided by the user, and currently lack the capability to infer context from device location and other parameters. Current methods can capture system requirements and specifications in a form, however, this information is not put to use to generate device programming, to aid in the installation process or facilitate end-user interaction with the system. Basically, current practices rely on experts to design, build, install and commission computerized control, or any Supervisory Control and Data Acquisition (SCADA) systems based almost entirely on a textual description.